<%@	page 
		 contentType = "text/html;charset=utf-8" 
		 import = "java.net.URLEncoder" 
		 import="java.util.*,java.io.*,java.sql.*,java.text.*,common.*,db.*"
%><% 
	//=============================================//
	//파라미터로 받아야 하는 데이터                //
	//=============================================//
	request.setCharacterEncoding("utf-8");
	String file_id = request.getParameter("file_id");
	String filename = request.getParameter("file_name");
	String file_folder = request.getParameter("file_folder") == null ? "" : request.getParameter("file_folder");
	int file_size = ( request.getParameter("file_size") != null ? Integer.parseInt(request.getParameter("file_size")) : 0);
	System.out.println(file_id);
	System.out.println(filename);
	String msg = "";	//메세지 받는 변수
	String  filepath = QueryManager.getQuery("upload.path") + "/" + file_folder;
	if (!filepath.trim().endsWith("/")) filepath+="/";
	System.out.println(filepath);

	try {
    	//=============================================//
    	//가져온 데이터로 절대 경로및 변수 셋팅        //
    	//=============================================//

		//로컬에서 파일 이름 한글 변환 해주는 부분 삭제
		filename = new String(filename.getBytes("euc-kr"),"8859_1");
    	//filename = new String(filename.getBytes("utf-8"),"8859_1");
    	//filename = new String(filename.getBytes("8859_1"),"utf-8");
    	//file_id = new String(file_id.getBytes("8859_1"),"utf-8");
    
    	msg = ":fn:" + filename;				//메세지를 위한 변수
    	System.out.println(msg);
    	
   		//=============================================//
       	//화일 다운로드 시작			       //
       	//=============================================//
       	String ut = filepath + file_id;
       	msg = msg + ":ut:" + ut;
       
       	File file = new File(ut); // 절대경로입니다.
		byte b[] = new byte[1024];
//		out.close();
		response.reset();
		java.io.BufferedInputStream  fin  = new java.io.BufferedInputStream(new java.io.FileInputStream(file));
		java.io.BufferedOutputStream fout = new java.io.BufferedOutputStream(response.getOutputStream());

		String strClient = request.getHeader("User-Agent");

		if (strClient.indexOf("MSIE 5.5") != -1) {
			response.setHeader("Content-Type", "doesn/matter; charset=utf-8");
			response.setContentType("doesn/matter");
			response.setHeader("Content-Disposition", "inline; filename=" + filename);
		} else {
			response.setHeader("Content-Type", "application/octet-stream; charset=utf-8");
			response.setContentType("Content-Type: application/octet-stream;");
			response.setHeader("Content-Disposition","attachment; filename=" + filename);
		}
//		response.setHeader("Content-Transfer-Encoding", "binary;");
		response.setHeader("Pragma", "no-cache;");
		response.setHeader("Expires", "-1;");

		for (int i; (i = fin.read(b)) != -1; ) {
			fout.write(b, 0, i);
			fout.flush();
		}

		fin.close();
		fout.flush();
		fout.close();

       	//=============================================//
		// JSP페이지에서의 getOutputStream() 함수 사용시 
		// java.lang.IllegalStateException 발생을 막기 위한 구문
		// 20090112 evasuri 
		out.clear();
		out = pageContext.pushBody();
       	//=============================================//
	}catch (IllegalStateException e) {
//       	msg = msg + "파일 다운로드를 완료하지 못했습니다.<br>" + e.toString();
//        System.out.println("Exception --> " + msg) ;
//       	response.sendRedirect("./error.jsp?excep=" + msg);     
		out.clear();
		out = pageContext.pushBody();
	}catch (IOException e) {
//       	msg = msg + "파일 다운로드를 완료하지 못했습니다.<br>" + e.toString();
//        System.out.println("Exception --> " + msg) ;
//       	response.sendRedirect("./error.jsp?excep=" + msg);
		out.clear();
		out = pageContext.pushBody();
	} catch (Exception e) {
//       	msg = msg + "파일 다운로드를 완료하지 못했습니다.<br>" + ":"+file_id+":"+e.toString();
//        System.out.println("Exception --> " + msg) ;
//      	response.sendRedirect("./error.jsp?excep=" + msg);
		out.clear();
		out = pageContext.pushBody();
	}

%>

